package com.ucode.crm.mapper;

import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.ucode.crm.mode.BusinessStatus;
import com.ucode.crm.mode.BusinessStatusGroup;
import com.ucode.crm.mode.BusinessStatusGroupDept;
import com.ucode.tool.base.MapVo;

public interface BusinessStatusGroupMapper {

    /**
     * 添加商机状态组
     * @author lilliang
     * @date 2020年3月13日
     * @param businessStatusGroup
     * @return
     */
    public int insert(BusinessStatusGroup businessStatusGroup);
    
    /**
     * 更新商机状态组
     * @author liliang
     * @date 2020年3月13日
     * @param businessStatusGroup
     * @return
     */
    public int update(BusinessStatusGroup businessStatusGroup);
    
    /**
     * 批量逻辑删除,可恢复
     * @author liliang
     * @date 2020年1月31日
     * @param id
     * @return
     */
    public int deleteByLogic(Long id);
    
    /**
     * 物理删除商机状态组，不可恢复
     * @author liliang
     * @date 2020年3月13日
     * @param id
     * @return
     */
    public int delete(Long id);
    
    /**
     * 批量物理删除商机状态组，不可恢复
     * @author liliang
     * @date 2020年3月13日
     * @param ids
     * @return
     */
    public int batchDelete(List<Long> ids);
    
    /**
     * 批量保存商机状态
     * @author liliang
     * @date 2020年3月13日
     * @param businessStatusItems
     * @return
     */
    public int batchSaveStatus(List<BusinessStatus> businessStatusItems);
    
    /**
     * 批量物理删除商机状态
     * @author liliang
     * @date 2020年3月13日
     * @param ids
     * @return
     */
    public int batchDeleteBusinessStatus(List<Long> ids);
    
    /**
     * 批量保存商机状态组跟部门的关系
     * @author liliang
     * @date 2020年3月13日
     * @param businessStatusGroupDepts
     * @return
     */
    public int batchSaveGroupDept(List<BusinessStatusGroupDept> businessStatusGroupDepts);

    /**
     * 批量物理删除商机状态组跟部门的关系
     * @author liliang
     * @date 2020年3月13日
     * @param ids
     * @return
     */
    public int batchDeleteGroupDept(List<Long> ids);
    
    /**
     * 主键查询商机状态组
     * @author liliang
     * @date 2020年3月13日
     * @param id
     * @return
     */
    public BusinessStatusGroup findById(Long id);
    
    /**
     * 主键集合查询商机状态组
     * @author liliang
     * @date 2020年3月13日
     * @param ids
     * @return
     */
    public List<BusinessStatusGroup> findByIds(List<Long> ids);
    
    /**
     * 查询组内商机状态
     * @author liliang
     * @date 2020年3月13日
     * @param groupId
     * @return
     */
    public List<BusinessStatus> findBusinessStatuzs(Long groupId);
    
    /**
     * 查询组内商机状态
     * @author liliang
     * @date 2020年3月13日
     * @param groupId
     * @return
     */
    public List<Long> findBusinessStatuzIds(Long groupId);
    
    /**
     * 查询商机状态组跟部门的关系
     * @author liliang
     * @date 2020年3月13日
     * @param groupId
     * @return
     */
    public List<BusinessStatusGroupDept> findBusinessStatusGroupDepts(Long groupId);
    
    /**
     * 查询商机状态组跟部门的关系
     * @author liliang
     * @date 2020年3月13日
     * @param groupId
     * @return
     */
    public List<Long> findBusinessStatusGroupDeptIds(Long groupId);
    
    /**
     * 查询部门可用的商机状态组
     * @author liliang
     * @date 2020年3月13日
     * @param groupId
     * @return
     */
    public List<BusinessStatusGroup> findDeptValidBusinessStatusGroup(Long depteId);
    
    public List<BusinessStatusGroup> queryList();

}
